From 5d81d015539535fb7f79383c7b9d49253b5209fe Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Wed, 18 Dec 2013 11:54:46 +0000 Subject: [PATCH] xen: arm: clarify cacheability requirements of hypercall arguments. Accepting hypercall arguments which are either consistently in cached or uncached is tricky and/or potentially slow, requiring a guest mapping lookup to determine whether/when to do a cache clean or invalidate. There are very few reasons, and no current use cases in practice, for a guest to use uncached memory for their hypercall arguments. Therefore mandate that all hypercall arguments must be mapped inner-cacheable. Do not place any restriction on the outer-cacheability or on the cache fill/flush strategy used. If use cases arise then we can consider specific exemptions to this rule. Signed-off-by: Ian Campbell Acked-by: Stefano Stabellini --- xen/include/public/arch-arm.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h index 475cb4aa72..ef6217d73e 100644 --- a/xen/include/public/arch-arm.h +++ b/xen/include/public/arch-arm.h @@ -58,6 +58,11 @@ * (AAPCS64). Where there is a conflict the 64-bit standard should be * used regardless of guest type. Structures which are passed as * hypercall arguments are always little endian. + * + * All hypercall arguments passed via a pointer to guest memory must + * reside in memory which is mapped as Normal Inner-cacheable. Any + * Inner cache allocation strategy (Write-Back, Write-Through etc) is + * acceptable. There is no restriction on the Outer-cacheability. */ /* -- 2.30.2